package com.yunji.order.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yunji.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @Project: yunji-coffee
 * @Package: com.yunji.order.vo
 * @Title: OrderParam
 * @Description: 订单查询条件
 * <p>
 * History:
 * Date						Version			Author			Summary
 * ========================================================================
 * 2024-04-25 11:58:57		V1.0			HuaAo		新建类
 */
@Data
public class OrderParam implements Serializable {
    private static final long serialVersionUID = 7867541999657320848L;

    @Excel(name = "订单流水号")
    @ApiModelProperty(value = "订单流水号")
    @Length(message = "订单号不能超过{max}个字符", max = 20)
    private String orderCode;

    @Excel(name = "支付方式 (0-余额支付 1-微信支付 2-阿里支付)", width = 15)
    @ApiModelProperty("支付方式 (0-余额支付 1-微信支付 2-阿里支付)")
    private Integer payMode;

    @Excel(name = "交易流水号", width = 15)
    @ApiModelProperty(value = "交易流水号")
    private String tradeCode;

    @Excel(name = "低的支付金额", width = 15)
    @ApiModelProperty("低的支付金额")
    private BigDecimal minTotalAmount;

    @Excel(name = "高的支付金额", width = 15)
    @ApiModelProperty("高的支付金额")
    private BigDecimal maxTotalAmount;

    @Excel(name = "低的实付金额", width = 15)
    @ApiModelProperty("低的实付金额")
    private BigDecimal minActualAmount;

    @Excel(name = "高的实付金额", width = 15)
    @ApiModelProperty("高的实付金额")
    private BigDecimal maxActualAmount;

    @Excel(name = "低的优惠金额", width = 15)
    @ApiModelProperty("低的优惠金额")
    private BigDecimal minMinusAmount;

    @Excel(name = "高的优惠金额", width = 15)
    @ApiModelProperty("高的优惠金额")
    private BigDecimal maxMinusAmount;

    @Excel(name = "顾客ID", width = 15)
    @ApiModelProperty("顾客ID")
    private Long memberId;

    @Excel(name = "顾客昵称", width = 15)
    @ApiModelProperty("顾客昵称")
    @Length(message = "顾客昵称不能超过{max}个字符", max = 15)
    private String memberName;

    @Excel(name = "顾客电话", width = 15)
    @ApiModelProperty("顾客电话")
    @Length(message = "顾客手机不能超过{max}个字符", max = 11)
    private String memberPhone;

    @Excel(name = "商品ID", width = 15)
    @ApiModelProperty("商品ID")
    private Long productId;

    @Excel(name = "商品名称", width = 15)
    @ApiModelProperty("商品名称")
    @Length(message = "商品名称不能超过{max}个字符", max = 30)
    private String productName;

    @Excel(name = "商品类型", width = 15)
    @ApiModelProperty("商品类型")
    private Integer productTypes;

    @Excel(name = "低的销售价格", width = 15)
    @ApiModelProperty("低的销售价格")
    private BigDecimal minSalePrice;

    @Excel(name = "高的销售价格", width = 15)
    @ApiModelProperty("高的销售价格")
    private BigDecimal maxSalePrice;

    @Excel(name = "低的折扣价", width = 15)
    @ApiModelProperty("低的折扣价")
    private BigDecimal minOnSalePrice;

    @Excel(name = "高的折扣价", width = 15)
    @ApiModelProperty("高的折扣价")
    private BigDecimal maxOnSalePrice;

    @ApiModelProperty("所属ID")
    private Long belongId;

    @ApiModelProperty("父属ID")
    private Long parentId;

    @Excel(name = "代理ID", width = 15)
    @ApiModelProperty("代理ID")
    private Long agentId;

    @Excel(name = "代理昵称", width = 15)
    @ApiModelProperty("代理昵称")
    private String agentName;

    @Excel(name = "经理用户ID", width = 15)
    @ApiModelProperty("经理用户ID")
    private Long managerId;

    @Excel(name = "经理用户名称", width = 15)
    @ApiModelProperty("经理用户名称")
    private String managerName;

    @Excel(name = "经理用户手机号", width = 15)
    @ApiModelProperty("经理用户手机号")
    private String managerPhone;

    @Excel(name = "网点名称", width = 15)
    @ApiModelProperty("网点名称")
    private String siteName;

    @Excel(name = "员工姓名", width = 15)
    @ApiModelProperty("员工姓名")
    private String staffName;

    @Excel(name = "员工手机号", width = 15)
    @ApiModelProperty("员工手机号")
    private String staffPhone;

    @Excel(name = "货柜ID", width = 15)
    @ApiModelProperty("货柜ID")
    private Long containerId;

    @Excel(name = "货柜名称", width = 15)
    @ApiModelProperty("货柜名称")
    @Length(message = "货柜名称不能超过{max}个字符", max = 15)
    private String containerName;

    @Excel(name = "货柜二维码", width = 15)
    @ApiModelProperty("货柜二维码")
    private String qrCode;

    @Excel(name = "订单状态", width = 15)
    @ApiModelProperty("订单状态")
    private Integer orderStatus;

    @Excel(name = "售后状态", width = 15)
    @ApiModelProperty("售后状态")
    private Integer AfterSaleStatus;

    @Excel(name = "低的创建时间", width = 15)
    @ApiModelProperty("高的创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startCreateTime;

    @Excel(name = "高的创建时间", width = 15)
    @ApiModelProperty("高的创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date closeCreateTime;

    @ApiModelProperty("用户昵称")
    private String userName;

    @ApiModelProperty("手机号")
    private String phone;

    /*---------------------------------------------订单查询分割---------------------------------------*/

    @ApiModelProperty("商品类型")
    private Integer[] productType;

    @ApiModelProperty("申请状态 1、待审核;2:待退款;3:已驳回;4已退款")
    private Integer[] tradeStatus = {1, 2, 3, 4};

    @ApiModelProperty("支付开始时间")
    private Date beginPayTime;

    @ApiModelProperty("支付结束时间")
    private Date endedPayTime;

    @ApiModelProperty("申请开始时间")
    private Date beginApplyTime;

    @ApiModelProperty("申请结束时间")
    private Date endedApplyTime;

    @ApiModelProperty("审核开始时间")
    private Date beginAuditTime;

    @ApiModelProperty("审核结束时间")
    private Date endedAuditTime;

    @ApiModelProperty("站点ID数组")
    private Long[] siteIds;

    @ApiModelProperty("员工ID数组")
    private Long[] staffIds;

    @ApiModelProperty("查询字段")
    private String searchFiled;
}